home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / daemons / init / sysvinit.000 / sysvinit / sysvinit-2.64 / wall.c < prev   
Encoding:
C/C++ Source or Header  |  1995-06-22  |  1.2 KB  |  59 lines

  1. /*
  2.  * wall.c    Write to all users logged in.
  3.  *
  4.  * Usage:    wall [text]
  5.  *
  6.  * Version:    @(#)wall  1.01  18-Nov-1992  MvS
  7.  *
  8.  *        This file is part of the sysvinit suite,
  9.  *        Copyright 1991-1995 Miquel van Smoorenburg.
  10.  *
  11.  *        This program is free software; you can redistribute it and/or
  12.  *        modify it under the terms of the GNU General Public License
  13.  *        as published by the Free Software Foundation; either version
  14.  *        2 of the License, or (at your option) any later version.
  15.  */
  16.  
  17. #include <string.h>
  18. #include <stdio.h>
  19.  
  20. char *Version = "@(#) wall 1.01 18-11-1992 MvS";
  21. #define MAXLEN 4096
  22.  
  23. extern void wall();
  24.  
  25. int main(argc, argv)
  26. int argc;
  27. char **argv;
  28. {
  29.   char buf[MAXLEN];
  30.   char line[83];
  31.   int f;
  32.   int len = 0;
  33.   char *p;
  34.   
  35.   buf[0] = 0;
  36.  
  37.   if (argc > 1) {
  38.       for(f = 1; f < argc; f++) {
  39.           len += strlen(argv[f]) + 1;
  40.           if (len >= MAXLEN) break;
  41.           strcat(buf, argv[f]);
  42.           strcat(buf, " ");
  43.       }
  44.       strcat(buf, "\r\n");
  45.   } else {
  46.       while(fgets(line, 80, stdin)) {
  47.           /* Take care that line ends in \r\n */
  48.           for(p = line; *p && *p != '\n'; p++)
  49.               ;
  50.           strcpy(p, "\r\n");
  51.           len += strlen(line);
  52.           if (len >= MAXLEN) break;
  53.           strcat(buf, line);
  54.       }
  55.   }
  56.   wall(buf, 0);
  57.   return(0);
  58. }
  59.